home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group00a.txt / 000072_icon-group-sender _Wed Apr 19 13:56:14 2000.msg < prev    next >
Internet Message Format  |  2001-01-03  |  2KB

  1. Return-Path: <icon-group-sender>
  2. Received: (from root@localhost)
  3.     by baskerville.CS.Arizona.EDU (8.9.1a/8.9.1) id NAA01144
  4.     for icon-group-addresses; Wed, 19 Apr 2000 13:56:00 -0700 (MST)
  5. Message-Id: <200004192056.NAA01144@baskerville.CS.Arizona.EDU>
  6. From: "F.G. van DORP" <F.G.van.Dorp@digimedia.nl>
  7. X-Newsgroups: comp.lang.icon
  8. Subject: Re: Reversible assignment really reversible ?
  9. X-Newsreader: Forte Agent 1.7/32.534
  10. Date: Wed, 19 Apr 2000 19:19:26 GMT
  11. X-Complaints-To: abuse@chello.nl
  12. X-Trace: nlnews00.chello.com 956171966 212.187.67.243 (Wed, 19 Apr 2000 18:19:26 GMT)
  13. To: icon-group@optima.CS.Arizona.EDU
  14. Errors-To: icon-group-errors@optima.CS.Arizona.EDU
  15. Status: RO
  16.  
  17. On 17 Apr 2000 16:33:32 -0400, "Frank J. Lhota"
  18. <NOSPAM.Frank.Lhota@lexma.meitech.com> wrote:
  19.  
  20. >...
  21. >
  22. >If I understand your question correctly, you are wondering why reversible
  23. >assignment fails after resumption. The reason for this is that it would have
  24. >an undesired effect on control backtracking. Consider the scanning
  25. >expression above, where text is "queen":
  26. >
  27. >                               (i <- 3) assigns 3 to i and suspends;
  28. >                               (j <   find("q")) fails, so we resume the most recently 
  29. Surely you mean i <=
  30.  
  31. >suspended expression;
  32. >    (i <- 3) is resumed, so i gets its previous value (1);
  33. >
  34. >Now if (i <- 3) were to succeed after being resumed, goal-driven evaluation
  35. >requires that we evaluate (i < find("q")) again, this time with i=1. This
  36. >evaluation would succeed, and therefor the whole scanning expression would
  37. >succeed, giving j=1. Clearly, this is not what you wanted.
  38. Why not, after all it would still be true !
  39. However, with the present implementation the first rev.assignment that gets
  40. resumed in a compound expression, will make the whole expression fail.
  41. Such a waste...
  42. Besides, I'd imagine you'd avoid using regular assignments in compound
  43. expressions in the first place: should the expression fail in the end, all
  44. succesful regular assignments within this expression would still
  45. be permanent, contrary to rev.assignments (your version or mine). 
  46. ==================
  47.  
  48.